package com.jumi.microservice.domain.vo;

import com.fasterxml.jackson.annotation.JsonFormat;
import org.hibernate.validator.constraints.Length;

import java.time.LocalDateTime;


/**
 * - - - - - - - - - - - - - - -
 * 菜单返回VO
 * @author liuz
 * @date 2020/8/18 13:50
 *
 * - - - - - - - - - - - - - - -
 */
public class PriorityRMenuVO{

    /**
     * menu_id主键自增id
     */
    private Long menuId;

    /**
     * 父级id：0代表顶级
     */
    private Integer parentId;

    /**
     * 父级菜单名称
     */
    private String parentName;

    /**
     * 图标
     */
    private String icon;

    /**
     * 权限类型，根目录:G,模块:D,目录:M,菜单:C,按钮:B
     */
    private String menuType;

    /**
     * 菜单名称
     */
    @Length(max = 50,message = "菜单名称长度不能超过50个字符")
    private String menuName;

    /**
     * 排序
     */
    private Integer orderNum;

    /**
     * 是否外链(0:是,1:否)
     */
    private Integer isFrame;

    /**
     * 路由地址
     */
    @Length(max = 50,message = "路由地址长度不能超过100个字符")
    private String path;

    /**
     * 组件路径
     */
    @Length(max = 100, message = "组件路径长度不能超过100个字符")
    private String component;

    /**
     * 权限标识
     */
    @Length(max = 30,message  = "权限标识长度不能超过30个字符")
    private String perms;

    /**
     * 显示状态(0:显示,1:隐藏)
     */
    private Integer visible;

    /**
     * 菜单状态(0:正常,1:停用)
     */
    private Integer status;

    /**
     * 备注
     */
    private String remark;

    /**
     * 创建时间
     */
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    private LocalDateTime createTime;

    /**
     * 创建人
     */
    private String createBy;

    /**
     * 更新时间
     */
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    private LocalDateTime updateTime;

    /**
     * 更新人
     */
    private String updateBy;

    /**
     *  数据范围
     */
    private String dataScope;

    /**
     * 是否显示(左侧菜单 目录)
     */
    private Integer alwaysShow;

    /**
     * 根据visible返回
     */
    private boolean hidden;

    /**
     * 重定向暂定常量
     */
    private String redirect;


    public Long getMenuId() {
        return menuId;
    }

    public void setMenuId(Long menuId) {
        this.menuId = menuId;
    }

    public Integer getParentId() {
        return parentId;
    }

    public void setParentId(Integer parentId) {
        this.parentId = parentId;
    }

    public String getParentName() {
        return parentName;
    }

    public void setParentName(String parentName) {
        this.parentName = parentName;
    }

    public String getIcon() {
        return icon;
    }

    public void setIcon(String icon) {
        this.icon = icon;
    }

    public String getMenuType() {
        return menuType;
    }

    public void setMenuType(String menuType) {
        this.menuType = menuType;
    }

    public String getMenuName() {
        return menuName;
    }

    public void setMenuName(String menuName) {
        this.menuName = menuName;
    }

    public Integer getOrderNum() {
        return orderNum;
    }

    public void setOrderNum(Integer orderNum) {
        this.orderNum = orderNum;
    }

    public Integer getIsFrame() {
        return isFrame;
    }

    public void setIsFrame(Integer isFrame) {
        this.isFrame = isFrame;
    }

    public String getPath() {
        return path;
    }

    public void setPath(String path) {
        this.path = path;
    }

    public String getComponent() {
        return component;
    }

    public void setComponent(String component) {
        this.component = component;
    }

    public String getPerms() {
        return perms;
    }

    public void setPerms(String perms) {
        this.perms = perms;
    }

    public Integer getVisible() {
        return visible;
    }

    public void setVisible(Integer visible) {
        this.visible = visible;
    }

    public Integer getStatus() {
        return status;
    }

    public void setStatus(Integer status) {
        this.status = status;
    }

    public String getRemark() {
        return remark;
    }

    public void setRemark(String remark) {
        this.remark = remark;
    }

    public LocalDateTime getCreateTime() {
        return createTime;
    }

    public void setCreateTime(LocalDateTime createTime) {
        this.createTime = createTime;
    }

    public String getCreateBy() {
        return createBy;
    }

    public void setCreateBy(String createBy) {
        this.createBy = createBy;
    }

    public LocalDateTime getUpdateTime() {
        return updateTime;
    }

    public void setUpdateTime(LocalDateTime updateTime) {
        this.updateTime = updateTime;
    }

    public String getUpdateBy() {
        return updateBy;
    }

    public void setUpdateBy(String updateBy) {
        this.updateBy = updateBy;
    }

    public String getDataScope() {
        return dataScope;
    }

    public void setDataScope(String dataScope) {
        this.dataScope = dataScope;
    }

    public Integer getAlwaysShow() {
        return alwaysShow;
    }

    public void setAlwaysShow(Integer alwaysShow) {
        this.alwaysShow = alwaysShow;
    }

    public boolean getHidden() {
        return hidden;
    }

    public void setHidden(boolean hidden) {
        this.hidden = hidden;
    }

    public String getRedirect() {
        return redirect;
    }

    public void setRedirect(String redirect) {
        this.redirect = redirect;
    }
}
